package com.donger.common.messgae.handler;

import com.donger.common.messgae.template.MessageTemplate;
import com.donger.common.messgae.template.SmsTemplate;

/**
 * @author 7326
 */
public interface MessageHandler<T extends MessageTemplate> {

    /**
     * 执行入口
     *
     * @param messageTemplate 信息
     *
     * @exception Exception 执行异常
     */
    default void execute(T messageTemplate) throws Exception{
        check(messageTemplate);
        if(!process(messageTemplate)){
            fail(messageTemplate);
        }
    };


    /**
     * 校验数据
     * @param messageTemplate 短信模板
     * @throws Exception 校验异常
     */
    void check(T messageTemplate) throws Exception;




    /**
     * 业务处理
     *
     * @param messageTemplate 信息
     * @return boolean
     */
    boolean process(T messageTemplate);


    /**
     * 失败处理
     *
     * @param messageTemplate 信息
     */
    void fail(T messageTemplate);


}
